package com.api.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.api.config.ApiConstant;
import com.api.entity.SysConfig;
import com.api.entity.User;
import com.api.service.UserService;
import com.api.util.ApiJson;
import com.api.util.MD5Util;
import com.api.util.SysConfigUtil;

@Controller
@RequestMapping("/user")
public class UserController extends BaseController {
	@Autowired
	private UserService userService;
	@Autowired
	private SysConfigUtil sysConfigUtil;

	@RequestMapping("/login")
	public String login() {
		return "user/login";
	}

	@RequestMapping("/register")
	public String register() {
		return "user/register";
	}

	@RequestMapping("/logout")
	public String logout(HttpSession session) {
		session.removeAttribute(ApiConstant.LOGIN_SESSION_NAME);
		return "/user/login";
	}

	@RequestMapping("/doLogin")
	@ResponseBody
	public ApiJson doLogin(User user, HttpServletRequest req) {
		ApiJson json = new ApiJson();
		if (StringUtils.isEmpty(user.getName())) {
			json.setMessage("登陆账号不能为空");
			json.setIsSuccess(false);
			return json;
		}
		if (StringUtils.isEmpty(user.getPwd())) {
			json.setMessage("登陆密码不能为空");
			json.setIsSuccess(false);
			return json;
		}
		User queryUser = userService.getUser(user);
		if (queryUser == null || !queryUser.getPwd().equals(MD5Util.md5(user.getPwd()))) {
			json.setMessage("账号密码错误");
			json.setIsSuccess(false);
			return json;
		}
		HttpSession session = req.getSession(true);
		// 时间设置3小时
		session.setMaxInactiveInterval(60 * 60 * 3);
		session.setAttribute(ApiConstant.LOGIN_SESSION_NAME, queryUser);
		json.setMessage("登陆成功");
		json.setIsSuccess(true);
		return json;
	}

	@RequestMapping("/doRegister")
	@ResponseBody
	public ApiJson doRegister(User user, String code) {
		ApiJson json = new ApiJson();
		if (StringUtils.isEmpty(user.getName())) {
			json.setMessage("账号不能为空");
			json.setIsSuccess(false);
			return json;
		}
		if (StringUtils.isEmpty(user.getPwd())) {
			json.setMessage("密码不能为空");
			json.setIsSuccess(false);
			return json;
		}
		if (StringUtils.isEmpty(code)) {
			json.setMessage("注册码不能为空");
			json.setIsSuccess(false);
			return json;
		}
		SysConfig sysConfig = sysConfigUtil.getSysConfig("registerCode");
		if (sysConfig == null || !sysConfig.getVal().equals(code)) {
			json.setMessage("注册码不正确");
			json.setIsSuccess(false);
			return json;
		}
		User queryUser = userService.getUser(user);
		if (queryUser != null) {
			json.setMessage("账号重复");
			json.setIsSuccess(false);
			return json;
		}
		String pwd1 = MD5Util.md5(user.getPwd());
		user.setPwd(pwd1);
		userService.add(user);

		json.setMessage("注册成功");
		json.setIsSuccess(true);
		return json;
	}
}
